Skip to content

feat: track upload progress in attachment preview components#3060

Merged
szuperaz merged 27 commits intomasterfrom
file-upload-on-progress
Apr 8, 2026
Merged

feat: track upload progress in attachment preview components#3060
szuperaz merged 27 commits intomasterfrom
file-upload-on-progress

Conversation

@szuperaz
Copy link
Copy Markdown
Contributor

@szuperaz szuperaz commented Mar 25, 2026

🎯 Goal

https://linear.app/stream/issue/REACT-925/upload-progress-tracking

Depends on: https://github.com/GetStream/stream-chat-js/pull/1708/changes#diff-61c3f170c2f20982af303989006c8317adf3006784ed2b37513e1c50487353d0

Docs PR: https://github.com/GetStream/docs-content/pull/1161

🛠 Implementation details

  • New component: CircularProgressIndicator -> displays a circular progress indicator to track progress from 0 - 100%
  • New component: UploadProgressIndicator -> if upload progress is available, it displays CircularProgressIndicator, otherwise the LoadingIndicator. When is upload progress not available?
    • It's possible that axios can't retrieve upload progress info
    • If someone uses custom CDN uploads, they may not be able to/want to provide progress tracking
  • New component: UploadedSizeIndicator: displays: 5 MB / 24 MB
  • New component: AttachmentUploadedSizeIndicator:
    • During upload: 4 MB / 24 MB
    • After upload finished: 24 MB

🎨 UI Changes

Implementing this design: https://www.figma.com/design/Us73erK1xFNcB5EH3hyq6Y/Chat-SDK-Design-System?node-id=3517-102932&t=fizGA6SsyGt3g08F-0

Screenshot 2026-03-25 at 13 51 12 Screenshot 2026-03-25 at 16 01 36

@szuperaz szuperaz force-pushed the file-upload-on-progress branch from 1c15431 to 6c93b9b Compare March 25, 2026 15:14
@szuperaz szuperaz force-pushed the file-upload-on-progress branch from 6c93b9b to 50c8b11 Compare March 25, 2026 15:19
@szuperaz szuperaz marked this pull request as ready for review March 26, 2026 09:59
Comment thread src/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.tsx Outdated
Comment thread src/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.tsx Outdated
Comment thread src/context/ComponentContext.tsx Outdated
@szuperaz szuperaz force-pushed the file-upload-on-progress branch 3 times, most recently from e3e0a90 to db938aa Compare April 1, 2026 14:37
Comment thread src/components/Loading/ProgressIndicator.tsx Outdated
Comment thread src/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.tsx Outdated
@szuperaz szuperaz force-pushed the file-upload-on-progress branch from e400abb to 77ba34c Compare April 7, 2026 15:30
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

Size Change: +1.74 kB (+0.29%)

Total Size: 608 kB

📦 View Changed
Filename Size Change
dist/cjs/index.js 235 kB +858 B (+0.37%)
dist/css/index.css 45 kB +33 B (+0.07%)
dist/es/emojis.mjs 2.47 kB -1 B (-0.04%)
dist/es/index.mjs 233 kB +850 B (+0.37%)
ℹ️ View Unchanged
Filename Size
dist/cjs/audioProcessing.js 1.32 kB
dist/cjs/emojis.js 2.96 kB
dist/cjs/mp3-encoder.js 1.27 kB
dist/cjs/WithAudioPlayback.js 42.4 kB
dist/css/emoji-replacement.css 456 B
dist/es/audioProcessing.mjs 1.31 kB
dist/es/mp3-encoder.mjs 756 B
dist/es/WithAudioPlayback.mjs 42.2 kB

compressed-size-action

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 8, 2026

Codecov Report

❌ Patch coverage is 96.96970% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.52%. Comparing base (dc16bb5) to head (5e3dbee).
⚠️ Report is 14 commits behind head on master.

Files with missing lines Patch % Lines
...r/AttachmentPreviewList/AudioAttachmentPreview.tsx 33.33% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3060      +/-   ##
==========================================
+ Coverage   80.45%   80.52%   +0.06%     
==========================================
  Files         411      415       +4     
  Lines       11901    11948      +47     
  Branches     3835     3858      +23     
==========================================
+ Hits         9575     9621      +46     
- Misses       2326     2327       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

fullBytes !== undefined
) {
return (
<span
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be extracted into a React component as we have FileSizeIndicator?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could simplify it using FileSizeIndicator: 388416d

Comment thread src/context/ComponentContext.tsx Outdated
/** Custom UI component to render while the `MessageList` is loading new messages, defaults to and accepts same props as: [LoadingIndicator](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Loading/LoadingIndicator.tsx) */
LoadingIndicator?: React.ComponentType<LoadingIndicatorProps>;
/** Custom UI component for determinate progress (0–100), defaults to and accepts same props as: [CircularProgressIndicator](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Loading/CircularProgressIndicator.tsx) */
CircularProgressIndicator?: React.ComponentType<CircularProgressIndicatorProps>;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we just call it ProgressIndicator? Circular is a specific implementation of ProgressIndicator. The point of component context is as follows:

<WithComponents overrides={{ProgressIndicator: CircularProgressindicator}}>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference btw CircularProgressIndicator and UploadProgressIndicator?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UploadProgressIndicator is a higher-level component with fallback to LoadingIndicator if progress is not provided: https://github.com/GetStream/stream-chat-react/blob/file-upload-on-progress/src/components/Loading/UploadProgressIndicator.tsx#L22

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 028f6f6

@szuperaz szuperaz merged commit 8b13863 into master Apr 8, 2026
8 checks passed
@szuperaz szuperaz deleted the file-upload-on-progress branch April 8, 2026 13:06
github-actions bot pushed a commit that referenced this pull request Apr 14, 2026
## [14.0.0-beta.7](v14.0.0-beta.6...v14.0.0-beta.7) (2026-04-14)

### ⚠ BREAKING CHANGES

* remove onlySenderCanEdit from MessageProps
* - Removed legacy notification text callback props from Message props:
  getDeleteMessageErrorNotification,
  getFetchReactionsErrorNotification,
  getFlagMessageErrorNotification,
  getFlagMessageSuccessNotification,
  getMarkMessageUnreadErrorNotification,
  getMarkMessageUnreadSuccessNotification,
  getMuteUserErrorNotification,
  getMuteUserSuccessNotification,
  getPinMessageErrorNotification.
Notification customization must now be done through notification
translators
(Streami18n translationBuilder topic: "notification") and/or custom
MessageActions.
* - Message action handlers no longer publish notifications internally.
Errors now propagate to call sites, which are responsible for
success/error notifications.
* - Removed ConnectionStatus component. Connection notification UI is app
responsibility now.
* externalize sidebar toggle and remove navOpen state from the SDK (#3088)
* remove deprecated APIs ahead of v14 stable (#3086)

### Bug Fixes

* adjust padding for messages containing only padding ([#3102](#3102)) ([443b9a8](443b9a8))
* **AudioPlayback:** improve wave progress bar smoothness and sizing ([#3094](#3094)) ([982cf2a](982cf2a))
* correct various UI glitches ([#3110](#3110)) ([6605f63](6605f63))
* **Giphy:** use fixed height for giphy preview to prevent layout shifts ([#3095](#3095)) ([30e45fa](30e45fa))
* **MessageList:** prevent jump-to-message snap-back from bottom autoscroll ([#3109](#3109)) ([be8ed26](be8ed26))

### Features

* add EmojiPicker plugin stylesheet ([#3108](#3108)) ([b4ed464](b4ed464))
* add MediaBadge ([#3103](#3103)) ([e15caa4](e15caa4))
* add new styles for unsupported attachments (preview, message, channel preview) ([#3107](#3107)) ([19a0add](19a0add))
* add notification API wrapper ([#3096](#3096)) ([2060768](2060768))
* externalize sidebar toggle and remove navOpen state from the SDK ([#3088](#3088)) ([dc16bb5](dc16bb5))
* introduce extended reaction list to a reactions detail component ([#3100](#3100)) ([b284802](b284802))
* redesign UnsupportedAttachment ([#3099](#3099)) ([9156f6f](9156f6f))
* remove onlySenderCanEdit prop from MessageProps ([#3098](#3098)) ([759cadf](759cadf))
* track upload progress in attachment preview components ([#3060](#3060)) ([8b13863](8b13863))

### Refactors

* remove deprecated APIs ahead of v14 stable ([#3086](#3086)) ([8317b73](8317b73)), closes [#1804](https://github.com/GetStream/stream-chat-react/issues/1804)
@stream-ci-bot
Copy link
Copy Markdown

🎉 This PR is included in version 14.0.0-beta.7 🎉

The release is available on:

Your semantic-release bot 📦🚀

github-actions bot pushed a commit that referenced this pull request Apr 16, 2026
## [14.0.0](https://github.com/GetStream/stream-chat-react/compare/v13.13.1...v14.0.0) (2026-04-16)

### ⚠ BREAKING CHANGES

* remove onlySenderCanEdit from MessageProps
* - Removed legacy notification text callback props from Message props:
  getDeleteMessageErrorNotification,
  getFetchReactionsErrorNotification,
  getFlagMessageErrorNotification,
  getFlagMessageSuccessNotification,
  getMarkMessageUnreadErrorNotification,
  getMarkMessageUnreadSuccessNotification,
  getMuteUserErrorNotification,
  getMuteUserSuccessNotification,
  getPinMessageErrorNotification.
Notification customization must now be done through notification
translators
(Streami18n translationBuilder topic: "notification") and/or custom
MessageActions.
* - Message action handlers no longer publish notifications internally.
Errors now propagate to call sites, which are responsible for
success/error notifications.
* - Removed ConnectionStatus component. Connection notification UI is app
responsibility now.
* externalize sidebar toggle and remove navOpen state from the SDK (#3088)
* remove deprecated APIs ahead of v14 stable (#3086)
* for existing code but changes the accepted values.

### `getGroupChannelDisplayInfo` return value changed

The utility function `getGroupChannelDisplayInfo` (from
`src/components/ChannelListItem/utils.tsx`) no longer returns
`overflowCount` in its result object.

### `AvatarProps.size` type widened to accept arbitrary strings

The `size` prop on `AvatarProps` changed from the union `'2xl' | 'xl' |
'lg' | 'md' | 'sm' | 'xs' | null` to `'2xl' | 'xl' | 'lg' | 'md' | 'sm'
| 'xs' | (string & {}) | null`. This allows passing custom size strings
while preserving autocomplete for the known values.

### `GroupAvatarProps.size` type widened to accept arbitrary strings

The `size` prop on `GroupAvatarProps` changed from `'2xl' | 'xl' | 'lg'
| null` to `'2xl' | 'xl' | 'lg' | (string & {}) | null`. This allows
passing custom size strings while preserving autocomplete for the known
values.

### New `capLimit` prop on `AvatarStack`

A new optional `capLimit` prop (type `number`, default `3`) controls the
maximum number of avatars rendered before overflow. When `displayInfo`
has more entries than `capLimit`, only the first `capLimit` items are
shown and a "+N" badge displays the remainder.

### `GroupAvatarMember` type gains optional `id` field

The `GroupAvatarMember` type now includes an optional `id?: string`
field. When present, it is used as the React `key` for rendered avatars
instead of the fallback `${userName}-${imageUrl}-${index}` pattern.

## Behavioral Changes

### `ChannelAvatar` always renders via `GroupAvatar` internally

Previously, `ChannelAvatar` conditionally chose between `<Avatar>` (for
0–1 members) and `<GroupAvatar>` (for 2+ members). It now always
delegates to `<GroupAvatar>`, which itself renders a single `<Avatar>`
when fewer than 2 members are present. The visual output is unchanged,
but the component tree structure differs.

### `GroupAvatar` auto-caps displayed members at 4 (or 2 with overflow)

Previously, callers controlled how many members to display and the
overflow count. Now `GroupAvatar` internally slices `displayMembers`:
- **4 or fewer members:** all are rendered, no badge.
- **More than 4 members:** only the first 2 are rendered, with a "+N"
badge showing the count of remaining members.

### `AvatarStack` auto-caps displayed items (default: 3, configurable
via `capLimit`)

Previously, callers controlled how many items to display and the
overflow count. Now `AvatarStack` internally slices `displayInfo` based
on the `capLimit` prop (default `3`):
- **`capLimit` or fewer items:** all are rendered, no badge.
- **More than `capLimit` items:** only the first `capLimit` are
rendered, with a "+N" badge showing the count of remaining items.

### `TypingIndicator` no longer manually slices typing users

The `TypingIndicator` component previously sliced the list of typing
users to a maximum of 3 before passing to `AvatarStack`. It now passes
all typing users, relying on `AvatarStack`'s internal capping (also at
3). The net visual result is unchanged.
* Importing styles from `stream-chat-react/dist/css/v2/*`
would no longer work, import from `stream-chat-react/dist/css/*`
instead.
* remove components ActionsIcon, ReactionIcon,
ThreadIcon, MessageErrorIcon
* replace class str-chat__message-error-icon with str-chat__message-error-indicator
* do not allow to mark own messages unread
* remove MessageErrorText component
* re-throw error from handleDelete in MessageContext
* All `str-chat__channel-preview*` CSS classes have been
renamed to `str-chat__channel-list-item*` (e.g.
`.str-chat__channel-preview-container` →
`.str-chat__channel-list-item-container`);
`.str-chat__message-input-cooldown` has been renamed to
`.str-chat__message-composer-cooldown`; `.str-chat__message-simple-name`
has been renamed to `.str-chat__message-metadata__name`;
`.str-chat__simple-message--error-failed` has been renamed to
`.str-chat__message-inner--error`; `.str-chat__message-simple-timestamp`
has been renamed to `.str-chat__message-metadata__timestamp`. Removed
`.str-chat__message-simple` and `.str-chat__message-simple--me` root
class names from `MessageUI` and `MessageBlocked` components. Component
`MessageActionsWrapper` has been dropped.
* replace MessageListNotifications with NotificationList
* remove PauseIcon, PlayTriangleIcon, GeolocationIcon
* replace openButtonProps with TriggerComponent in
DropdownProps
* remove dialogId from DropdownProps
* the BaseImage component uses ImageFallback component instead of CSS masl to display fallback on error
* replaced addNotification from ChannelStateContenxt with
client.notifications API
* NotificationList was moved with new parent now being MessageListMainPanel
* rename MessageListNotificationsProps to NotificationListProps
* `useAudioController` has been removed from the public
API. Migrate custom audio playback code to `useAudioPlayer`.

### 🛠 Implementation details

- delete `src/components/Attachment/hooks/useAudioController.ts`
- remove the public export from `src/components/Attachment/index.ts`
- decouple `WaveProgressBar` from the deleted hook file by giving it its
own UI-level seek callback type
- keep the current audio playback components compatible with
`audioPlayer.seek`
- validated with `yarn types`

### 🎨 UI Changes

None.
* ChannelSearch component set has been dropped, use
Search instead.
* useChannelPreviewInfo now always returns a defined
`groupChannelDisplayInfo` (object with `members` and `overflowCount`).
For 1:1 or ≤2 members it returns `{ members: [], overflowCount:
undefined }`. Code that treated `groupChannelDisplayInfo == null` as
“not a group” should use e.g. `groupChannelDisplayInfo.members.length >=
2` instead.
* close modals from within modal contents using
ModalContextValue.close
* removed Modal component and kept only GlobalModal
component
* removed div with class str-chat_modal-inner
* remove support for "live" label
* remove support for displaying channel.data.subtitle
under the title
* replace str-chat__channel-header-end with
str-chat__channel-header__data
* remove MessageIsThreadReplyInChannelButtonIndicator
from ComponentContext
* replace MessageIsThreadReplyInChannelButtonIndicator
with MessageAlsoSentInChannelIndicator
* remove CSS variables for
--str-chat__jump-to-latest-message-*
* rename MessageNotification to NewMessageNotification
* rename ScrollToBottomButton to
ScrollToLatestMessageButton
* introduce ScrollToLatestMessageButton by default into
message list
* change the markup of ScrollToLatestMessageButton
* change the markup of UnreadMessagesSeparator
* `MessageReactionsDetail`'s (formerly
`ReactionsListModal`) composition (markup) has changed, class names have
been renamed or removed (see table bellow). It no longer renders in a
modal but rather in a dialog - this change required a container-agnostic
rename.
| Change Type | Old Class Name | New Class Name |
| -------------------- |
------------------------------------------------------------- |
* replaced isOnlyEmojis util function with
messageTextHasEmojisOnly
* replaced component MessageDeleted with
MessageDeletedBubble.
* in Message, the MessageDeleted does not have default
component. Instead, message deleted is now rendered within message
bubble using MessageDeletedBubble. Thus the default deleted message UI
now shows message annotations, metadata and replies button.
* remove FixedHeightMessage component
* change props for VirtualMessage in ComponentContext
from FixedHeightMessageProps to MessageUIComponentProps
* Remove legacy high-order context wrappers
(`with*Context`) from `stream-chat-react` since the docs and internal
usage are hook-based (`use*Context`).

### 🛠 Implementation details

- Removed the following exported HOCs from context modules:
  - `withChannelActionContext`
  - `withChannelStateContext`
  - `withChatContext`
  - `withComponentContext`
  - `withMessageContext`
  - `withTranslationContext`
  - `withTypingContext`
- Kept provider/hook APIs intact (`*Provider` and `use*Context`).
- Removed now-unused imports/types tied to HOC implementations
(including `UnknownType` usages in these files).
- Deleted now-unused helper `src/context/utils/getDisplayName.ts`.

### 🎨 UI Changes

N/A (no UI changes).
* change the signature of MessageContextValue['handleDelete']
* remove props endOfGroup, firstOfGroup and groupedByUser
from MessageProps as their purpose is unknown and message grouping
should be done by Message prop groupStyles
* order of actions in MessageActions has changed
* removed CSS variables --str-chat__message-bounce-*
* remove RemindMeActionButton and RemindMeActionButtonProps
* remove QuotedPoll component and isQuoted prop from Poll
* str-chat__message-composer-container now wraps the
message composer
* date separator does not contain separation lines
* 1 or more images and giphy attachment are now rendered
with ModalGallery component
* ModalGallery component is now user to render the image
preview in message bubble and Gallery in full-screen mode if clicked on
the attachment in the bubble
* Assets rendered in Gallery have to be of a new type
GalleryItem
* Overriding ModalGallery in ComponentContext means
overriding the attachment preview as well as the Gallery on Modal view
* Overriding Gallery in ComponentContext means overriding
a component that renders media assets in slideshow and provides the
slideshow navigation API
* `GroupAvatar` component now renders a singular `Avatar`
component without any wrappers if the `groupChannelDisplayInfo` contains
only a single entry. Some class names have been removed, see the table
bellow:
| Change Type | Old Class Name                       | New Class Name |
| ----------- | ------------------------------------ | -------------- |
| Removed     | `str-chat__avatar--single`           | -              |
| Removed     | `str-chat__avatar-group--three-part` | -              |
* Certain element classes have been renamed, some have
been removed, see the table of the actual changes bellow:
| Change Type | Old Class Name | New Class Name |
| ----------- | --------------------------------------- |
--------------------------------------------------- |
| Changed | `str-chat__reaction-list` | `str-chat__message-reactions` |
| Removed | `str-chat__message-reactions-container` | - |
| Removed | `str-chat__reaction-list--reverse` | - |
| Changed | `str-chat__message-reactions` |
`str-chat__message-reactions__list` |
| Changed | `str-chat__message-reaction` |
`str-chat__message-reactions__list-item` |
| Removed | `str-chat__message-reaction-own` | - |
| Changed | `str-chat__message-reaction-emoji` |
`str-chat__message-reactions__item-icon` |
| Changed | `str-chat__message-reaction-count` |
`str-chat__message-reactions__item-count` |
| Changed | `str-chat__reaction-list--counter` |
`str-chat__message-reactions__total-count` |
* replace specific components in MessageActions with
general purpose ContextMenu components
* MessageOptions, CustomMessageActions,
CustomMessageActionsList, MessageActionsBox are no longer available, use
MessageActions functionality instead.
* suggestion list and suggestion list items were
re-implemented with new ContextMenu API.
* the suggestion list and suggestion list items have
changed the markup
* `Avatar` component no longer takes `user` prop, prop
`image` has been renamed to `imageUrl` and prop `name` has been renamed
to `userName`.
* Props `Avatar`, `detailedView`, `latest_reactions`,
`reaction_counts`, `reaction_groups`, `reactionOptions` & `reverse` have
been removed from `ReactionSelector` component. The reason is that some
of them were deprecated and some of them weren't being used in a way the
component was set up by default. The component's class names have also
changed, see table.

| Change Type | Old Class Name | New Class Name |
| ----------- |
* `Channel` component no longer supports component
overrides, use `WithComponents` instead.

### chore

* adjustmens to Avatar, GroupAvatar and ChannelAvatar ([#3087](https://github.com/GetStream/stream-chat-react/issues/3087)) ([49d576e](https://github.com/GetStream/stream-chat-react/commit/49d576e4a710472f797cd11feb3c562ebd36651b))
* remove with*Context HOC wrappers ([#2962](https://github.com/GetStream/stream-chat-react/issues/2962)) ([e0cd4f2](https://github.com/GetStream/stream-chat-react/commit/e0cd4f25429170b2485016a1a8f34af4281338ff))

### Bug Fixes

* add integration guide md file to help AI assistant's work ([8441f5b](https://github.com/GetStream/stream-chat-react/commit/8441f5b10884f52d520c14a570eebd706a4f0d9a))
* add integration guide md file to help AI assistant's work ([#2911](https://github.com/GetStream/stream-chat-react/issues/2911)) ([2efd30e](https://github.com/GetStream/stream-chat-react/commit/2efd30e59daab6b70671a215f4a7e7246953e4be))
* add temporarily CSS v2 palette-variables ([#3040](https://github.com/GetStream/stream-chat-react/issues/3040)) ([48d4647](https://github.com/GetStream/stream-chat-react/commit/48d46471955500e4c357c339b3d40c746520b7fb))
* adjust ChatView.Selector buttons styles ([#2990](https://github.com/GetStream/stream-chat-react/issues/2990)) ([7907f51](https://github.com/GetStream/stream-chat-react/commit/7907f51f2b0e912ee591a0a52904067be213a11a))
* adjust message UI for network error when sending a message ([#3042](https://github.com/GetStream/stream-chat-react/issues/3042)) ([e0207cd](https://github.com/GetStream/stream-chat-react/commit/e0207cd66a30aa3225a026f757d7f5840d04e3f5))
* adjust padding for messages containing only padding ([#3102](https://github.com/GetStream/stream-chat-react/issues/3102)) ([443b9a8](https://github.com/GetStream/stream-chat-react/commit/443b9a8a92ec16a42e4a1a3ecdb1dd70fbbdca6f))
* **ai:** stop typewriter animation on `ai_indicator.stop` ([#2918](https://github.com/GetStream/stream-chat-react/issues/2918)) ([7777721](https://github.com/GetStream/stream-chat-react/commit/7777721b2d42f5e8c16f90c4ff1a809ca7027325))
* align chat view sidebars and attachment preview remove icon ([#3004](https://github.com/GetStream/stream-chat-react/issues/3004)) ([08dc4b6](https://github.com/GetStream/stream-chat-react/commit/08dc4b6daa11365fb5d115e0810d43c829474f37))
* align message list width constraints ([#2965](https://github.com/GetStream/stream-chat-react/issues/2965)) ([02c9b8d](https://github.com/GetStream/stream-chat-react/commit/02c9b8d51884cb2abc5894b644162d1733de61dc))
* align message reactions vertically to the center of the message list ([#3064](https://github.com/GetStream/stream-chat-react/issues/3064)) ([55dd2e8](https://github.com/GetStream/stream-chat-react/commit/55dd2e81ace4f3f8d08fe0d2eb5a2726f1cd2bd1))
* align textarea placeholder and text with the surroundings ([#3052](https://github.com/GetStream/stream-chat-react/issues/3052)) ([da293f0](https://github.com/GetStream/stream-chat-react/commit/da293f09cdba3593552f8365ae01bd476b40f63f))
* allow forwarding `unsafeHTML` to system messages (`EventComponent`) ([#2973](https://github.com/GetStream/stream-chat-react/issues/2973)) ([99c3960](https://github.com/GetStream/stream-chat-react/commit/99c3960deca5776626fe6cee2f9586fdb8a4344f))
* allow useNotificationTarget to return undefined ([#3046](https://github.com/GetStream/stream-chat-react/issues/3046)) ([38b278e](https://github.com/GetStream/stream-chat-react/commit/38b278e04b8136407bf0464d19563844d5418f71))
* assorted UI/UX fixes (Giphy, polls, dialogs, composer, headers) ([#3081](https://github.com/GetStream/stream-chat-react/issues/3081)) ([6c06e04](https://github.com/GetStream/stream-chat-react/commit/6c06e0439db044f7a9b99bb0913fc819fb9c66b3))
* **AudioPlayback:** improve wave progress bar smoothness and sizing ([#3094](https://github.com/GetStream/stream-chat-react/issues/3094)) ([982cf2a](https://github.com/GetStream/stream-chat-react/commit/982cf2a17e5aa3f90f4e4ad86f8311626cbe4040))
* calculate message read status for the first message in a channel (ported from v13) ([#3056](https://github.com/GetStream/stream-chat-react/issues/3056)) ([b7c33c8](https://github.com/GetStream/stream-chat-react/commit/b7c33c804b8140bf1855494647aa9f08da59d096))
* change class names to reflect component renames ([#3035](https://github.com/GetStream/stream-chat-react/issues/3035)) ([7c978a9](https://github.com/GetStream/stream-chat-react/commit/7c978a9e559f2cb8581d65365a4eb5e932db573d))
* clean up CSS build output ([#3072](https://github.com/GetStream/stream-chat-react/issues/3072)) ([f06846d](https://github.com/GetStream/stream-chat-react/commit/f06846da4d492c0fb9ca375ee049682e6f9e48ba))
* clear message composer on unmount ([#3053](https://github.com/GetStream/stream-chat-react/issues/3053)) ([f2a79ab](https://github.com/GetStream/stream-chat-react/commit/f2a79ab1a3f6305cbbcc2040586f87d7622dd76e))
* close CSS gaps, fix ChannelList dialog portal, and clean up icons ([#3079](https://github.com/GetStream/stream-chat-react/issues/3079)) ([a47981f](https://github.com/GetStream/stream-chat-react/commit/a47981ff3f70bd2fb3b1e1ca6d46682adbe65df8))
* component renames ([#3030](https://github.com/GetStream/stream-chat-react/issues/3030)) ([a563248](https://github.com/GetStream/stream-chat-react/commit/a5632481745fb2943e1ae2a0fae84b26829b7a94))
* correct various UI glitches ([#3110](https://github.com/GetStream/stream-chat-react/issues/3110)) ([6605f63](https://github.com/GetStream/stream-chat-react/commit/6605f6361f4d44f79f9f313ed8c561faa4cf374f))
* **demo:** remove archived filter param ([46da3f8](https://github.com/GetStream/stream-chat-react/commit/46da3f8c645c98e8ea19829ccd6ba1dd472c9725))
* **demo:** remove pinned_at sort param ([0bc9ed6](https://github.com/GetStream/stream-chat-react/commit/0bc9ed616a9f3bc33b4309c910aadaae50f35c90))
* **dialog:** prevent outside-click from other dialog managers closing active dialogs ([#3112](https://github.com/GetStream/stream-chat-react/issues/3112)) ([233ec89](https://github.com/GetStream/stream-chat-react/commit/233ec89200acfacb6e1322b60e51beff8054e58c))
* don't expose giphy arg in quoted message preview and channel preview ([21b905c](https://github.com/GetStream/stream-chat-react/commit/21b905ceec072b75618543f4846128f73432227a))
* **examples:** clean up tutorial examples for v14 ([#3089](https://github.com/GetStream/stream-chat-react/issues/3089)) ([6239895](https://github.com/GetStream/stream-chat-react/commit/623989574afdaf250225f62e0627478ebb48e473))
* **examples:** enable async voice recording preview in thread composer ([#3092](https://github.com/GetStream/stream-chat-react/issues/3092)) ([6c7cd42](https://github.com/GetStream/stream-chat-react/commit/6c7cd42afffb6d341b7a3b4bf5cc5a9bcd3f98ee))
* **examples:** fix resize handle alignment and thread border gap in RTL ([#3091](https://github.com/GetStream/stream-chat-react/issues/3091)) ([2f060ae](https://github.com/GetStream/stream-chat-react/commit/2f060ae8979de5df77148c591785db730c6f533c))
* exit search on blur [REACT-855] ([#3013](https://github.com/GetStream/stream-chat-react/issues/3013)) ([97f485d](https://github.com/GetStream/stream-chat-react/commit/97f485d0910b574770b34278816585f66c140a8e))
* focus outline visual glitch for input ([212e449](https://github.com/GetStream/stream-chat-react/commit/212e449dacff89bfa9ab8a1cb73ee38291ae6fea))
* giphy and command ui fixes ([#3025](https://github.com/GetStream/stream-chat-react/issues/3025)) ([aa36a4d](https://github.com/GetStream/stream-chat-react/commit/aa36a4dd65c74481fac6c8b0dd058be3ca6a45ba))
* **Giphy:** use fixed height for giphy preview to prevent layout shifts ([#3095](https://github.com/GetStream/stream-chat-react/issues/3095)) ([30e45fa](https://github.com/GetStream/stream-chat-react/commit/30e45faf719f5bc6a12a7b39729acb17426f03d6))
* hide buttons in message input if a command is selected ([22d32d4](https://github.com/GetStream/stream-chat-react/commit/22d32d4696f60d7e834dc5b4877dfcc255b9cd4f))
* **Icons, RTL:** update icon catalog, RTL layout fixes, dark mode & thread voice recording ([#3090](https://github.com/GetStream/stream-chat-react/issues/3090)) ([a4b1c26](https://github.com/GetStream/stream-chat-react/commit/a4b1c2662400f084c3d97f07457012928edf6885)), closes [#3080](https://github.com/GetStream/stream-chat-react/issues/3080)
* **Icons:** sync icon catalog with refreshed Line SVGs ([#3080](https://github.com/GetStream/stream-chat-react/issues/3080)) ([9472f7b](https://github.com/GetStream/stream-chat-react/commit/9472f7b35bb28ec00a477c1436e928f27a5f670b))
* improve md file to guide AI assistants used by our integrators ([7339614](https://github.com/GetStream/stream-chat-react/commit/7339614a70f0bb8d7c3d07c1251e1ac89b60879d))
* improve md file to guide AI assistants used by our integrators ([#2912](https://github.com/GetStream/stream-chat-react/issues/2912)) ([c249ef7](https://github.com/GetStream/stream-chat-react/commit/c249ef7cd549da2dfbe5066610edc668412fd685))
* increase message list width ([f81cae4](https://github.com/GetStream/stream-chat-react/commit/f81cae475ea6ed7a7b416b42a63536c73e6852bf))
* increase message list width ([#3062](https://github.com/GetStream/stream-chat-react/issues/3062)) ([fdf0e15](https://github.com/GetStream/stream-chat-react/commit/fdf0e155b074f75920871185ff789e08d1abbc39))
* isDayjs import usage for ESM ([#2924](https://github.com/GetStream/stream-chat-react/issues/2924)) ([73f8767](https://github.com/GetStream/stream-chat-react/commit/73f876710863867bde7d0becb293ad8519c2b1b8))
* keep MessageList scrolled to the bottom ([#3068](https://github.com/GetStream/stream-chat-react/issues/3068)) ([91eba1b](https://github.com/GetStream/stream-chat-react/commit/91eba1b4d8853f9e19614a5522b375cde8a7b4dd))
* keep the distance of command menus constant from the invoking button ([#3049](https://github.com/GetStream/stream-chat-react/issues/3049)) ([960c1f9](https://github.com/GetStream/stream-chat-react/commit/960c1f9aa25ddc8db51e3a38f28678adec5cdf4b))
* make poll forms submitable ([#2989](https://github.com/GetStream/stream-chat-react/issues/2989)) ([7dc82ca](https://github.com/GetStream/stream-chat-react/commit/7dc82ca535aa1a230912f76791f766bf7d67ac49))
* make the full option list container take the available height ([da77bf3](https://github.com/GetStream/stream-chat-react/commit/da77bf334ab9a87bc45d13885829b3f814d5a15b))
* make vite example channel selection bookmarkable ([#2997](https://github.com/GetStream/stream-chat-react/issues/2997)) ([1fbbfd1](https://github.com/GetStream/stream-chat-react/commit/1fbbfd1821da2ab9368e56a5be889f6fa7472fc2))
* **MessageList:** make pinned message highlight extend edge-to-edge ([#3124](https://github.com/GetStream/stream-chat-react/issues/3124)) ([f131a6a](https://github.com/GetStream/stream-chat-react/commit/f131a6a2a7bbe7157d039479ff35ad8ed4c20b2d))
* **MessageList:** prevent jump-to-message snap-back from bottom autoscroll ([#3109](https://github.com/GetStream/stream-chat-react/issues/3109)) ([be8ed26](https://github.com/GetStream/stream-chat-react/commit/be8ed265f4306115fde03f4e62637c0c9f32760c))
* **MessageList:** set width on message list scroll container ([#3077](https://github.com/GetStream/stream-chat-react/issues/3077)) ([3f09362](https://github.com/GetStream/stream-chat-react/commit/3f093622835dab275dcc89d2195b11c2d833c2da))
* **MessageUI:** use isDeleted as a flag to determine message deletion ([#3113](https://github.com/GetStream/stream-chat-react/issues/3113)) ([f95f287](https://github.com/GetStream/stream-chat-react/commit/f95f287b439043e990741cb9e900117760951d21))
* move show all options button to PollOptionList component ([e75ca3a](https://github.com/GetStream/stream-chat-react/commit/e75ca3acb92bb7fb38c83b3d6909888773f03d24))
* only categorize giphy type as giphy attachment ([f032187](https://github.com/GetStream/stream-chat-react/commit/f032187a2817469421cd72ad45cd4facf85f40de))
* poll UI fixes ([#3034](https://github.com/GetStream/stream-chat-react/issues/3034)) ([885b7a6](https://github.com/GetStream/stream-chat-react/commit/885b7a64c18d7ebde3deadf9f32ccc23df4427d5))
* post-review `MessageReactionsDetail` adjustments ([#3082](https://github.com/GetStream/stream-chat-react/issues/3082)) ([a82bdcb](https://github.com/GetStream/stream-chat-react/commit/a82bdcb20a3249cd84bb379b4d56cb18319a332b))
* prevent empty message composer textarea from growing ([#3051](https://github.com/GetStream/stream-chat-react/issues/3051)) ([880d12d](https://github.com/GetStream/stream-chat-react/commit/880d12d99ce565b23e3ce53415e86a3ea03ed2e1))
* prevent hiding floating date separator in message lists ([#3119](https://github.com/GetStream/stream-chat-react/issues/3119)) ([397fadd](https://github.com/GetStream/stream-chat-react/commit/397fadd70558a3da71e6973d5ac917a07f40daac))
* prevent increasing unread count by useMarkRead hook if read-events are disabled ([#2925](https://github.com/GetStream/stream-chat-react/issues/2925)) ([d0e7b5f](https://github.com/GetStream/stream-chat-react/commit/d0e7b5f7033ec4a05cb95e2f0beaf1665b110f39))
* prevent mobile sidebar overlays from shifting chat content ([#2995](https://github.com/GetStream/stream-chat-react/issues/2995)) ([35f4282](https://github.com/GetStream/stream-chat-react/commit/35f4282e96cfd7afc227d165f63a5feb92401a84))
* prevent poll options layout shifting upon voting ([#3048](https://github.com/GetStream/stream-chat-react/issues/3048)) ([cdaf480](https://github.com/GetStream/stream-chat-react/commit/cdaf4807ca96f7f5d5ced0bc1b6cf2a5a7885786))
* recert interactive flag, make Giphy use BaseImage ([59163cc](https://github.com/GetStream/stream-chat-react/commit/59163cc8380d5328c8e322bcd712cb2b8d0b37da))
* reliably detect whether the click originated inside before closing mobile nav ([#3061](https://github.com/GetStream/stream-chat-react/issues/3061)) ([8d25ead](https://github.com/GetStream/stream-chat-react/commit/8d25ead3a52aa91b27e186c2e41fe890b74cc3c7))
* remove bottom padding from poll option with votes in poll results ([#3059](https://github.com/GetStream/stream-chat-react/issues/3059)) ([a55774d](https://github.com/GetStream/stream-chat-react/commit/a55774d69b1777be7d7d43eaf6460335d61c9399))
* remove Channel component propagation ([#2904](https://github.com/GetStream/stream-chat-react/issues/2904)) ([cd6001f](https://github.com/GetStream/stream-chat-react/commit/cd6001fd9e7d56028cceaec458ea21d9aa229248))
* remove customMessageData from handleSubmit type declaration ([#2950](https://github.com/GetStream/stream-chat-react/issues/2950)) ([fc547be](https://github.com/GetStream/stream-chat-react/commit/fc547be57622c80a789a5ef5004cc342f94c73ec))
* remove MessageEditedTimestamp component ([7cbe67e](https://github.com/GetStream/stream-chat-react/commit/7cbe67e4c72f1c8553342078496caed1f8785d90))
* remove the tooltip from PollVote ([ca11f90](https://github.com/GetStream/stream-chat-react/commit/ca11f908ddabecbc93ad8f8a8d8e179545944a0a))
* remove UI issues in poll related components ([#3118](https://github.com/GetStream/stream-chat-react/issues/3118)) ([d7870bb](https://github.com/GetStream/stream-chat-react/commit/d7870bb8bd93d15ca6de51e576ef0b8274f16116))
* remove unnecessary CSS ([3fc6f3f](https://github.com/GetStream/stream-chat-react/commit/3fc6f3fc9a65685bc569bd5e583fec681fda1b9f))
* rename ChannelListMessenger to ChannelListUI ([#3036](https://github.com/GetStream/stream-chat-react/issues/3036)) ([d251338](https://github.com/GetStream/stream-chat-react/commit/d251338327cdfe72042894c62c523bd9164c104f))
* revert changes to EndPollAlert ([c364b0b](https://github.com/GetStream/stream-chat-react/commit/c364b0b92b832251ccddc3e895b33f21f20e7617))
* show ToggleSidebarButton in threads view's ThreadHeader ([#3020](https://github.com/GetStream/stream-chat-react/issues/3020)) ([53d5639](https://github.com/GetStream/stream-chat-react/commit/53d5639aa471cf47c8352926aac3a97174752af0))
* single checkmark color in dark mode ([283fad8](https://github.com/GetStream/stream-chat-react/commit/283fad8b1f781cfb8f2d9100318117deb5258160))
* single checkmark color in dark mode ([#3032](https://github.com/GetStream/stream-chat-react/issues/3032)) ([b3858c8](https://github.com/GetStream/stream-chat-react/commit/b3858c89c3c1607a658b0b793070310efd487ef0))
* sort command menus consistently ([#2967](https://github.com/GetStream/stream-chat-react/issues/2967)) ([64fd76b](https://github.com/GetStream/stream-chat-react/commit/64fd76b57dc0dbd8fe5e8525a08507ae0d6218f2))
* stabilize all test suites after v14 breaking changes ([#3039](https://github.com/GetStream/stream-chat-react/issues/3039)) ([91c1602](https://github.com/GetStream/stream-chat-react/commit/91c1602b35fe06a5b02c78afc51b27d746125a2f))
* **styling:** use correct inverse text color tokens ([#3125](https://github.com/GetStream/stream-chat-react/issues/3125)) ([3702caa](https://github.com/GetStream/stream-chat-react/commit/3702caaa0227583a06b69a01e48dd3647d084c00)), closes [#000000](https://github.com/GetStream/stream-chat-react/issues/000000)
* suggesting a poll option shouldn't vote for it ([e0659f3](https://github.com/GetStream/stream-chat-react/commit/e0659f3ff5edcced4ebd9c42ac1720ecf610c7e5))
* turn off interactions for giphy ([d403eee](https://github.com/GetStream/stream-chat-react/commit/d403eee081fa6ee8d427c0b353bb2a56a4abee55))
* unified SummarizedMessagePreview, cover more cases ([#2977](https://github.com/GetStream/stream-chat-react/issues/2977)) ([1589481](https://github.com/GetStream/stream-chat-react/commit/158948154a5de3fe3cbf0bbc129e1de123430f58))
* unify poll modal: title casing for EN; placeholders; button placement ([33fed1e](https://github.com/GetStream/stream-chat-react/commit/33fed1e40cc57063337627ce1b5fc73101597691))
* unify what is considered a deleted message across the components ([#3117](https://github.com/GetStream/stream-chat-react/issues/3117)) ([20b4022](https://github.com/GetStream/stream-chat-react/commit/20b40226181cb22d1335a38b659b79708bff687f))
* update ChatView selector icons ([#2985](https://github.com/GetStream/stream-chat-react/issues/2985)) ([ea814c3](https://github.com/GetStream/stream-chat-react/commit/ea814c362d7042677aecdcc9f80a3a925798e4c4))
* use link icon for link-type attachments ([#3083](https://github.com/GetStream/stream-chat-react/issues/3083)) ([241209e](https://github.com/GetStream/stream-chat-react/commit/241209e8059ce767fe5bc3500466aa73f53618e3))
* voice recorder button not shown when quoting a message ([3a5dcdd](https://github.com/GetStream/stream-chat-react/commit/3a5dcddc6633bb43126093751f9b7a6a3ea65856))
* voice recorder button not shown when quoting a message ([#3015](https://github.com/GetStream/stream-chat-react/issues/3015)) ([dbd6648](https://github.com/GetStream/stream-chat-react/commit/dbd6648b2be0d7356736f903933e486c71c03fa3))
* wrap attachment previews in message composer ([#2994](https://github.com/GetStream/stream-chat-react/issues/2994)) ([a401978](https://github.com/GetStream/stream-chat-react/commit/a40197873c73393e110729201bf34eeee9a96c36))

### Features

* add "Voice message deleted" notification ([#3045](https://github.com/GetStream/stream-chat-react/issues/3045)) ([9982c45](https://github.com/GetStream/stream-chat-react/commit/9982c45a2964766e7050d5d24c2b2ad77b9bf1a1))
* add AvatarStack component + message replies button redesign ([#2938](https://github.com/GetStream/stream-chat-react/issues/2938)) ([f7ad774](https://github.com/GetStream/stream-chat-react/commit/f7ad77400bc28937ae3d7081cc8685fdf11e2c52)), closes [#2937](https://github.com/GetStream/stream-chat-react/issues/2937)
* add Button component and styles ([#2914](https://github.com/GetStream/stream-chat-react/issues/2914)) ([f4675c6](https://github.com/GetStream/stream-chat-react/commit/f4675c6c7479d694920b2bcda1bef24a350c94a2))
* add ContextMenu animations API and global close-on-click-outside configuration mechanism ([#3067](https://github.com/GetStream/stream-chat-react/issues/3067)) ([630e5c7](https://github.com/GetStream/stream-chat-react/commit/630e5c723815405d78ba977b996775745982fddb))
* add CSS variables ([#2913](https://github.com/GetStream/stream-chat-react/issues/2913)) ([4bc9ac4](https://github.com/GetStream/stream-chat-react/commit/4bc9ac47b141b1586a4486d5a541d1e6b0be9d3d))
* add dark theme support to stream-chat-react ([#3002](https://github.com/GetStream/stream-chat-react/issues/3002)) ([fbe28d0](https://github.com/GetStream/stream-chat-react/commit/fbe28d0fbfb782fb095041dc869c61bc71570f6b))
* add download attachment message action ([#3126](https://github.com/GetStream/stream-chat-react/issues/3126)) ([2f86376](https://github.com/GetStream/stream-chat-react/commit/2f86376d4b6dfc6e9e8ea8815b7a3de1a1816dff))
* add EmojiPicker plugin stylesheet ([#3108](https://github.com/GetStream/stream-chat-react/issues/3108)) ([b4ed464](https://github.com/GetStream/stream-chat-react/commit/b4ed464550c42e16592da935076dd384d59e466d))
* add EventComponent (system message) redesign ([#3007](https://github.com/GetStream/stream-chat-react/issues/3007)) ([c17fc99](https://github.com/GetStream/stream-chat-react/commit/c17fc99c6e904345d2775db1fe18aedad5b6fb4a))
* add MediaBadge ([#3103](https://github.com/GetStream/stream-chat-react/issues/3103)) ([e15caa4](https://github.com/GetStream/stream-chat-react/commit/e15caa4ef5b7eb43205826d53b3b4f1309c26d4e))
* add message translation indicator ([#2958](https://github.com/GetStream/stream-chat-react/issues/2958)) ([5c3a996](https://github.com/GetStream/stream-chat-react/commit/5c3a996a2947093d89729e4f3d59613eadb0a9d9))
* add MessageEditedIndicator component ([cfbe346](https://github.com/GetStream/stream-chat-react/commit/cfbe346b1b6c7cd9fe47424551300819c167e667))
* add MessageEditedIndicator component ([#3019](https://github.com/GetStream/stream-chat-react/issues/3019)) ([7e9637a](https://github.com/GetStream/stream-chat-react/commit/7e9637ae9e683d379160f923c1795e1f74d91fa7))
* add new giphy and audio attachment widget designs and attachment grouping redesign  ([#2934](https://github.com/GetStream/stream-chat-react/issues/2934)) ([e990c06](https://github.com/GetStream/stream-chat-react/commit/e990c0605b0150d9483d1ab0a9d428153ce5ec23))
* add new styles for unsupported attachments (preview, message, channel preview) ([#3107](https://github.com/GetStream/stream-chat-react/issues/3107)) ([19a0add](https://github.com/GetStream/stream-chat-react/commit/19a0add6696d45f4715cfbb2f62a503b4f022aaa))
* add notification API wrapper ([#3096](https://github.com/GetStream/stream-chat-react/issues/3096)) ([2060768](https://github.com/GetStream/stream-chat-react/commit/2060768b387a544bfa9602a6b0019a24be1bac23))
* add ReactionSelector styling + cleanup   ([#2916](https://github.com/GetStream/stream-chat-react/issues/2916)) ([24a1169](https://github.com/GetStream/stream-chat-react/commit/24a11690f65a54a61a7902466f2d1eef6a0adc6c))
* add sidebar display control ([#2978](https://github.com/GetStream/stream-chat-react/issues/2978)) ([b77d995](https://github.com/GetStream/stream-chat-react/commit/b77d9956e8661fc69042262569ed5aaa26c1e625))
* add smooth scrolling to MessageList ([#3027](https://github.com/GetStream/stream-chat-react/issues/3027)) ([cdf35d2](https://github.com/GetStream/stream-chat-react/commit/cdf35d29350a445a6e3ae1ebef410e0a01267b4d))
* adjust media gallery viewer ([#3006](https://github.com/GetStream/stream-chat-react/issues/3006)) ([6ea7a78](https://github.com/GetStream/stream-chat-react/commit/6ea7a78e4184fce6066f7318f9ebd57a5ff1474a))
* adjust vertical and horizontal message spacing ([#2954](https://github.com/GetStream/stream-chat-react/issues/2954)) ([ba65752](https://github.com/GetStream/stream-chat-react/commit/ba65752b94036dd29d37701003ddbbbac008b3f1))
* align iconOnly API and unread badge styling ([#2982](https://github.com/GetStream/stream-chat-react/issues/2982)) ([c28b8ff](https://github.com/GetStream/stream-chat-react/commit/c28b8ffdba9a56232f88fa0bec45d0e17ad1e1e4))
* align web sidebar nav icons with mobile tab bar ([#2979](https://github.com/GetStream/stream-chat-react/issues/2979)) ([370caea](https://github.com/GetStream/stream-chat-react/commit/370caea4a470c6c027cb948016630a0ac0e697c6))
* channel preview redesign ([#2974](https://github.com/GetStream/stream-chat-react/issues/2974)) ([5ef9027](https://github.com/GetStream/stream-chat-react/commit/5ef90271e654ab3cfb8647dd533c02820813e09a))
* convert ChatView into a general purpose sidebar ([#2939](https://github.com/GetStream/stream-chat-react/issues/2939)) ([cd7a030](https://github.com/GetStream/stream-chat-react/commit/cd7a030121e9e933f0b0c6b3e52e7287dd88041b))
* do not allow to mark own messages unread ([#3043](https://github.com/GetStream/stream-chat-react/issues/3043)) ([fe05b62](https://github.com/GetStream/stream-chat-react/commit/fe05b622751a5bac55dc927c0c39ef906b37c8db))
* **examples:** add RTL direction toggle to vite example app ([#3084](https://github.com/GetStream/stream-chat-react/issues/3084)) ([887a326](https://github.com/GetStream/stream-chat-react/commit/887a326ab81199ab72a8ea92c2b3bc6cfce7458a))
* **examples:** refresh react tutorial app for v14 ([#3078](https://github.com/GetStream/stream-chat-react/issues/3078)) ([86ada37](https://github.com/GetStream/stream-chat-react/commit/86ada37eaac8d97e7634d2af9dc9e251a2e4e5f5))
* extended reaction selector ([#2972](https://github.com/GetStream/stream-chat-react/issues/2972)) ([80c14e5](https://github.com/GetStream/stream-chat-react/commit/80c14e5160b64724306c6953500266ba626ca0ff))
* externalize sidebar toggle and remove navOpen state from the SDK ([#3088](https://github.com/GetStream/stream-chat-react/issues/3088)) ([dc16bb5](https://github.com/GetStream/stream-chat-react/commit/dc16bb584675f48d5f67cf5d5d355ba012cf81d2))
* hide quick message actions on small screens ([#3120](https://github.com/GetStream/stream-chat-react/issues/3120)) ([fb8e99b](https://github.com/GetStream/stream-chat-react/commit/fb8e99ba116c350318f5018fb3dac74de27261a9))
* **Icons:** migrate SDK icons to Phosphor icon set ([#3075](https://github.com/GetStream/stream-chat-react/issues/3075)) ([30c1bee](https://github.com/GetStream/stream-chat-react/commit/30c1beeae8651855fc30654de5903a970ca9f367))
* implement pinned message redesign ([#2952](https://github.com/GetStream/stream-chat-react/issues/2952)) ([3af135f](https://github.com/GetStream/stream-chat-react/commit/3af135f36257efb53114911076a3ad2fc42c016e))
* import all the icons that belong to Stream design system ([#2949](https://github.com/GetStream/stream-chat-react/issues/2949)) ([55c9a1a](https://github.com/GetStream/stream-chat-react/commit/55c9a1a226cc8f99419b61cfa7fae94603c27d03))
* introduce button variant props ([#2969](https://github.com/GetStream/stream-chat-react/issues/2969)) ([2a4eabd](https://github.com/GetStream/stream-chat-react/commit/2a4eabd02d7ca1807046ecb402857fc5f44250b1))
* introduce channelActionSet ([#3026](https://github.com/GetStream/stream-chat-react/issues/3026)) ([199797e](https://github.com/GetStream/stream-chat-react/commit/199797ed3e6bbdd0d386a100ae598f17d9217c63))
* introduce extended reaction list to a reactions detail component ([#3100](https://github.com/GetStream/stream-chat-react/issues/3100)) ([b284802](https://github.com/GetStream/stream-chat-react/commit/b2848025d83ad05da1fa9ebe96812ba2aa69bdb1))
* introduce Search component redesign ([#2981](https://github.com/GetStream/stream-chat-react/issues/2981)) ([c0b6230](https://github.com/GetStream/stream-chat-react/commit/c0b623069967da71aac577a1b9f9edc8ac3ad2df))
* introduce thread preview redesign ([#2975](https://github.com/GetStream/stream-chat-react/issues/2975)) ([90fdfe5](https://github.com/GetStream/stream-chat-react/commit/90fdfe5dfe120f5d5d9ce6db0db983fddae223ca))
* message reactions (`ReactionsList`) redesign  ([#2933](https://github.com/GetStream/stream-chat-react/issues/2933)) ([ce087fa](https://github.com/GetStream/stream-chat-react/commit/ce087fa6f1a0a1c326eefad33dfa42a4d2529733))
* message reactions detail redesign ([#2963](https://github.com/GetStream/stream-chat-react/issues/2963)) ([a941ed2](https://github.com/GetStream/stream-chat-react/commit/a941ed2583bdeb5178d9f2487cacbb0f6517578d))
* migrate MessageActions to use ContextMenu ([#2932](https://github.com/GetStream/stream-chat-react/issues/2932)) ([1d28279](https://github.com/GetStream/stream-chat-react/commit/1d28279ceaa681fc00e586e97b6f247ba2d48d85))
* new Avatar component design & adjustments ([#2926](https://github.com/GetStream/stream-chat-react/issues/2926)) ([2eb04ee](https://github.com/GetStream/stream-chat-react/commit/2eb04ee718d3224c4bc74c106d8039ec2b136a79))
* new GroupAvatar component design & adjustments  ([#2930](https://github.com/GetStream/stream-chat-react/issues/2930)) ([e307882](https://github.com/GetStream/stream-chat-react/commit/e3078829991e8c0013640fa3cbd6ee0051254071))
* poll actions modals adjustments ([#2993](https://github.com/GetStream/stream-chat-react/issues/2993)) ([cc44c3f](https://github.com/GetStream/stream-chat-react/commit/cc44c3f6b18b1ab74491798b861011b880f2768f))
* promote experimental `MessageActions` to stable ([#2908](https://github.com/GetStream/stream-chat-react/issues/2908)) ([1467b5c](https://github.com/GetStream/stream-chat-react/commit/1467b5c51af4c5a624b4ace0de77030c50d87d61))
* promote Search to stable, drop ChannelSearch [REACT-894] ([#3014](https://github.com/GetStream/stream-chat-react/issues/3014)) ([9a7b7a2](https://github.com/GetStream/stream-chat-react/commit/9a7b7a2b4e81601de3617f6c498381a38ebe448d))
* quick dropdown toggle and cleanup ([#3054](https://github.com/GetStream/stream-chat-react/issues/3054)) ([30ddab0](https://github.com/GetStream/stream-chat-react/commit/30ddab0f33696d61f22ad045aeaad36f15d285c1))
* redesign ChannelHeader ([#2970](https://github.com/GetStream/stream-chat-react/issues/2970)) ([57f8a91](https://github.com/GetStream/stream-chat-react/commit/57f8a9176843a1b8ca58d637951f51ca6a4fa8e2))
* redesign ChannelList loading skeletons ([#2988](https://github.com/GetStream/stream-chat-react/issues/2988)) ([e5b3b8e](https://github.com/GetStream/stream-chat-react/commit/e5b3b8e85404ecb5f2f8558a0111851133b003e1))
* redesign deleted message ([#2964](https://github.com/GetStream/stream-chat-react/issues/2964)) ([446de99](https://github.com/GetStream/stream-chat-react/commit/446de99a5b47e094fe91699e81c5769b1459cb0b))
* redesign EmptyStateIndicator for channel message list ([#2960](https://github.com/GetStream/stream-chat-react/issues/2960)) ([e745d69](https://github.com/GetStream/stream-chat-react/commit/e745d6957c27a0ca8d8a7dcf4abefb342161e483))
* redesign file drag-and-drop overlay ([#2959](https://github.com/GetStream/stream-chat-react/issues/2959)) ([d2a72b5](https://github.com/GetStream/stream-chat-react/commit/d2a72b54fd71fb1811814cf5d0dc20c2275c12e7))
* redesign floating indicators in message lists ([#2966](https://github.com/GetStream/stream-chat-react/issues/2966)) ([12d075b](https://github.com/GetStream/stream-chat-react/commit/12d075bb580fa24c7321b9d3fae4e0e292359067))
* redesign image loading and error placeholders ([#3000](https://github.com/GetStream/stream-chat-react/issues/3000)) ([3539020](https://github.com/GetStream/stream-chat-react/commit/3539020ec756815f432c4e4ddfca07a56841a6ab))
* redesign image placeholder ([#3024](https://github.com/GetStream/stream-chat-react/issues/3024)) ([d34a0b8](https://github.com/GetStream/stream-chat-react/commit/d34a0b844e804c6cbf5c69b70fd0eb306e8ddfdc))
* redesign location sharing components & port the missing component CSS ([#3031](https://github.com/GetStream/stream-chat-react/issues/3031)) ([b72deda](https://github.com/GetStream/stream-chat-react/commit/b72dedaec912a093683916b48611636365e5c4a2))
* redesign message actions icons and message error badge ([#3050](https://github.com/GetStream/stream-chat-react/issues/3050)) ([f4caa0e](https://github.com/GetStream/stream-chat-react/commit/f4caa0eb95a986f7dd742e7fbfbf40b16bd2ecce))
* redesign message annotations ([#2956](https://github.com/GetStream/stream-chat-react/issues/2956)) ([5702090](https://github.com/GetStream/stream-chat-react/commit/57020903e4608b8b7fb09f28a91064bb3409fb8e))
* redesign message composer commands, mentions and emoji suggestion lists ([#2931](https://github.com/GetStream/stream-chat-react/issues/2931)) ([f151abc](https://github.com/GetStream/stream-chat-react/commit/f151abcd1fe43f227dd42f3e9d3e88da1a2e3f91))
* redesign message composer for thread and allow to grow to 10 lines ([#2983](https://github.com/GetStream/stream-chat-react/issues/2983)) ([6b0310a](https://github.com/GetStream/stream-chat-react/commit/6b0310a5f3b48435179164f4e2ddacb3b0f0f363))
* redesign message list elements spacing ([#2937](https://github.com/GetStream/stream-chat-react/issues/2937)) ([1bf815f](https://github.com/GetStream/stream-chat-react/commit/1bf815f30ce29c488eb44413f13fcaa7548313b4))
* redesign MessageActions ([#2951](https://github.com/GetStream/stream-chat-react/issues/2951)) ([256d862](https://github.com/GetStream/stream-chat-react/commit/256d862e0390ff6fd4a1e428d9356cb80d01a66a))
* redesign notification system ([#3018](https://github.com/GetStream/stream-chat-react/issues/3018)) ([83dec93](https://github.com/GetStream/stream-chat-react/commit/83dec93aa216f79d6ef4508f423a70208bcbcced))
* redesign poll actions modals ([#2986](https://github.com/GetStream/stream-chat-react/issues/2986)) ([861d7de](https://github.com/GetStream/stream-chat-react/commit/861d7deb84d9975a2f7f097e0d19a1986ef62cdc))
* redesign poll in message and poll creation dialog ([#2944](https://github.com/GetStream/stream-chat-react/issues/2944)) ([c8adac4](https://github.com/GetStream/stream-chat-react/commit/c8adac44cee8de1408df811ba6da05907e70fc49))
* redesign SendToChannelCheckbox ([#2971](https://github.com/GetStream/stream-chat-react/issues/2971)) ([1695a85](https://github.com/GetStream/stream-chat-react/commit/1695a858346cae704da616400b8710cc9b6359f2))
* redesign the LoadingChannel component ([#2991](https://github.com/GetStream/stream-chat-react/issues/2991)) ([790df17](https://github.com/GetStream/stream-chat-react/commit/790df172ab949d5ec4b4fc3bcd73b60871fe25f6))
* redesign ThreadHeader and ThreadHead ([#2987](https://github.com/GetStream/stream-chat-react/issues/2987)) ([059ae6a](https://github.com/GetStream/stream-chat-react/commit/059ae6a8b7edc0a19622de971567a60934036487))
* redesign Tooltip ([#3116](https://github.com/GetStream/stream-chat-react/issues/3116)) ([d0cbaad](https://github.com/GetStream/stream-chat-react/commit/d0cbaaddb4e4d814764616528d67a40011f3f703))
* redesign typing indicator ([#3005](https://github.com/GetStream/stream-chat-react/issues/3005)) ([d6c08ca](https://github.com/GetStream/stream-chat-react/commit/d6c08ca8ee61a7ef776dd4ab21a7b7b5d3170add))
* redesign UnsupportedAttachment ([#3099](https://github.com/GetStream/stream-chat-react/issues/3099)) ([9156f6f](https://github.com/GetStream/stream-chat-react/commit/9156f6f4a8c1e24a940c5d2624c77709e9ce07c2))
* refresh Message design ([#2927](https://github.com/GetStream/stream-chat-react/issues/2927)) ([40525f3](https://github.com/GetStream/stream-chat-react/commit/40525f32c7c02f1605ba10f1e8fb5d453916c87c))
* refresh MessageComposer design ([#2919](https://github.com/GetStream/stream-chat-react/issues/2919)) ([87e89f7](https://github.com/GetStream/stream-chat-react/commit/87e89f7f3706840c098ff0ef05e523e2f14af7fe))
* remove MessageListNotifications component ([#3028](https://github.com/GetStream/stream-chat-react/issues/3028)) ([e06ec62](https://github.com/GetStream/stream-chat-react/commit/e06ec6219f5f883db11134d4ab3acd513e3ec382))
* remove onlySenderCanEdit prop from MessageProps ([#3098](https://github.com/GetStream/stream-chat-react/issues/3098)) ([759cadf](https://github.com/GetStream/stream-chat-react/commit/759cadf485a56b509368c58a459430a6973f2dd9))
* render voice recording preview in a dedicated slot ([#2957](https://github.com/GetStream/stream-chat-react/issues/2957)) ([2859c76](https://github.com/GetStream/stream-chat-react/commit/2859c76947190bf30829481e2e04f178cd1bf6b2))
* replace MessageIsThreadReplyInChannelButtonIndicator with MessageAlsoSentInChannelIndicator ([#2968](https://github.com/GetStream/stream-chat-react/issues/2968)) ([b198029](https://github.com/GetStream/stream-chat-react/commit/b19802907f276634a445b232aebdd869f657085e))
* replace react-image-gallery with proprietary Gallery component ([#2936](https://github.com/GetStream/stream-chat-react/issues/2936)) ([a52de09](https://github.com/GetStream/stream-chat-react/commit/a52de095d5dcecbecffb73c82704fe585c6cb724))
* reset audio player progress when the track is fully played ([#3066](https://github.com/GetStream/stream-chat-react/issues/3066)) ([7914e51](https://github.com/GetStream/stream-chat-react/commit/7914e516c42481aaca5b608e29c127eb7ec731bb))
* return modal's close button ([#2948](https://github.com/GetStream/stream-chat-react/issues/2948)) ([62a27e8](https://github.com/GetStream/stream-chat-react/commit/62a27e8db6e3f009a53c593efc77031158a9a0d3))
* return ProgressBar to Audio attachment component ([#3022](https://github.com/GetStream/stream-chat-react/issues/3022)) ([d3d1e19](https://github.com/GetStream/stream-chat-react/commit/d3d1e19bd3e876e952b921c81da52cb8bcf7efea))
* reuse channel list loading skeletons for thread list ([#2992](https://github.com/GetStream/stream-chat-react/issues/2992)) ([3d7a3a3](https://github.com/GetStream/stream-chat-react/commit/3d7a3a3eb0833df70a85c1dd73dfe4c864e5adff))
* shared gallery preview in AttachmentPreviewList ([#3044](https://github.com/GetStream/stream-chat-react/issues/3044)) ([f05f47d](https://github.com/GetStream/stream-chat-react/commit/f05f47d7b6a52653e0153e8c95c9401acfaf0682))
* show only time in MessageTimestamp ([#3021](https://github.com/GetStream/stream-chat-react/issues/3021)) ([da4aa92](https://github.com/GetStream/stream-chat-react/commit/da4aa9220940311dec821d773ff0b0f4d9aa11aa))
* track upload progress in attachment preview components ([#3060](https://github.com/GetStream/stream-chat-react/issues/3060)) ([8b13863](https://github.com/GetStream/stream-chat-react/commit/8b13863a6717d9a39060903a36869cf08c545bea))
* unify channel and thread display titles ([#2998](https://github.com/GetStream/stream-chat-react/issues/2998)) ([29bb396](https://github.com/GetStream/stream-chat-react/commit/29bb396bcd163b0b3e4cb26365f242ae0f525b55))
* unify dialog UI system ([#2955](https://github.com/GetStream/stream-chat-react/issues/2955)) ([44e2eaf](https://github.com/GetStream/stream-chat-react/commit/44e2eaf401761b66cbfcbdf259fb20b057426154))
* update empty states across chat views ([#2976](https://github.com/GetStream/stream-chat-react/issues/2976)) ([7eacfb7](https://github.com/GetStream/stream-chat-react/commit/7eacfb7242b9dfc6ebe77197dde3400c5628e0a0))
* use server-defined default limits for channel and channel lists ([#2943](https://github.com/GetStream/stream-chat-react/issues/2943)) ([6302c96](https://github.com/GetStream/stream-chat-react/commit/6302c967dc648614e6d6c5b4e0f3beefc777b3ef)), closes [#2940](https://github.com/GetStream/stream-chat-react/issues/2940)
* **vite-example:** add custom message UI showcase ([#3029](https://github.com/GetStream/stream-chat-react/issues/3029)) ([629e49f](https://github.com/GetStream/stream-chat-react/commit/629e49f10c1d551cbec3a519c9e78a58a76cc8ef))
* **vite-example:** add resizable chat panels ([#3009](https://github.com/GetStream/stream-chat-react/issues/3009)) ([0e34114](https://github.com/GetStream/stream-chat-react/commit/0e341140bb26b0646ab5695be0daa006baf0b731))

### Refactors

* move BaseImage out of gallery ([dfe9d77](https://github.com/GetStream/stream-chat-react/commit/dfe9d77ff347d8a40020b2617727445b0877593f))
* remove deprecated APIs ahead of v14 stable ([#3086](https://github.com/GetStream/stream-chat-react/issues/3086)) ([8317b73](https://github.com/GetStream/stream-chat-react/commit/8317b73a2e0874566d86a84470792c5ffa55c0d4)), closes [#1804](https://github.com/GetStream/stream-chat-react/issues/1804)
* remove deprecated useAudioController hook ([#3016](https://github.com/GetStream/stream-chat-react/issues/3016)) ([35f8a5d](https://github.com/GetStream/stream-chat-react/commit/35f8a5d4bc220d3d50462883cf84e37eb507ea51))
* remove initialNavOpenResponsive for redundancy ([#3023](https://github.com/GetStream/stream-chat-react/issues/3023)) ([1227617](https://github.com/GetStream/stream-chat-react/commit/1227617b0576c4d1f29e1dd00116ba43981c8139))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants